unit ListaOcen;

interface

uses Narzedzia;

  procedure dodaj_ocene(var head: woceny; ocena : integer);
  function licz_oceny(head : woceny) : integer;
  procedure usun_oceny(var head : woceny);

implementation

{---------------------------------}
{ Operacje na liscie ocen         }
{---------------------------------}

{ procedura dodaje ocene          }
procedure dodaj_ocene(var head: woceny; ocena : integer);
var
   p : woceny;
begin
    new(p);
    p^.nota := ocena;
    p^.nastepna_ocena:= head;
    head := p;
end;

{ procedura liczy ilosc ocen w liscie }
function licz_oceny(head : woceny) : integer;
var
  c : integer;
begin
  c := 0;
  while head <> nil do begin
    inc(c);
    head := head^.nastepna_ocena;
  end;
  licz_oceny := c;
end;

{ procedura usuwa listę jedno. zaw. oceny z pamieci
  - usuwamy cala liste, poniewaz nie mamy w zasadzie zadnej
  informacji za co ocena zostala uzyskana...
}
procedure usun_oceny(var head : woceny);
var
    aktualny: woceny;
begin
    aktualny := head;
    while aktualny <> nil  do begin
          aktualny := aktualny^.nastepna_ocena;
          dispose(head);
          head := aktualny;

  end;
    head := nil;
end;

end.

